namespace SunshineFarmWord
{
    public class PlayerStateMachine : StateMachine
    {
        public Player Player { get; }
        public PlayerStateReusableData ReusableData { get; }

        // 待机状态
        public PlayerIdlingState IdlingState { get; }
        // 步行状态
        public PlayerWalkState WalkState { get; }
        // 跑步状态
        public PlayerRunState RunState { get; }

        //
        // 开始钓鱼状态
        public PlayerCastingState CastingState { get; }
        // 等待钓鱼状态
        public PlayerWaitingState WaitingState { get; }
        // 钓鱼收线状态
        public PlayerReelingState ReelingState { get; }
        //钓鱼结束状态
        public PlayerCaughtState CaughtState { get; }

        // 砍树
        public PlayerAxeState AxeState { get; }
        //攻击
        public PlayerAttackState AttackState { get; }
        //死亡
        public PlayerDeathState DeathState { get; }

        //挖掘
        public PlayerDigState DigState { get; }

        // 采集
        public PlayerDoingState DoingState { get; }

        // 浇水
        public PlayerWateringState WateringState { get; }

        // 游泳
        public PlayerSwimmingState SwimmingState { get; }

        //建造
        public PlayerHammeringState HammeringState { get; }

        //受击
        public PlayerHurtState HurtState { get; }

        //采矿
        public PlayerMiningState MiningState { get; }

        //滚动
        public PlayerRollState RollState { get; }

        //搬运
        public PlayerCarryState CarryState { get; }


        public PlayerStateMachine(Player player)
        {
            Player = player;

            ReusableData = new PlayerStateReusableData();

            IdlingState = new PlayerIdlingState(this);
            WalkState = new PlayerWalkState(this);
            RunState = new PlayerRunState(this);

            // Fishing
            CastingState = new PlayerCastingState(this);
            WaitingState = new PlayerWaitingState(this);
            ReelingState = new PlayerReelingState(this);
            CaughtState = new PlayerCaughtState(this);

            //Axe
            AxeState = new PlayerAxeState(this);

            //攻击
            AttackState = new PlayerAttackState(this);

            //死亡
            DeathState = new PlayerDeathState(this);
            //挖掘
            DigState = new PlayerDigState(this);
            //采集
            DoingState = new PlayerDoingState(this);
            //浇水
            WateringState = new PlayerWateringState(this);
            //游泳
            SwimmingState = new PlayerSwimmingState(this);
            //建造
            HammeringState = new PlayerHammeringState(this);
            //受击
            HurtState = new PlayerHurtState(this);
            //采矿
            MiningState = new PlayerMiningState(this);
            //滚动
            RollState = new PlayerRollState(this);
            //搬运
            CarryState = new PlayerCarryState(this);
        }
    }
}
